// 观音湖景区巡检计划数据
// 基于amapPoiData.js真实POI坐标生成巡检路线
// 坐标系：天地图坐标系(CGCS2000/WGS84) -> 高德地图坐标系(GCJ02)

import { amapPoiData } from './amapPoiData.js'

// 天地图坐标转高德地图坐标 (WGS84 -> GCJ02)
// 这是一个简化的转换算法，适用于中国大陆地区
export const transformWGS84ToGCJ02 = (lng, lat) => {
  const a = 6378245.0
  const ee = 0.00669342162296594323

  const dLat = transformLat(lng - 105.0, lat - 35.0)
  const dLng = transformLng(lng - 105.0, lat - 35.0)

  const radLat = lat / 180.0 * Math.PI
  let magic = Math.sin(radLat)
  magic = 1 - ee * magic * magic
  const sqrtMagic = Math.sqrt(magic)

  const dLatResult = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * Math.PI)
  const dLngResult = (dLng * 180.0) / (a / sqrtMagic * Math.cos(radLat) * Math.PI)

  return {
    lng: lng + dLngResult,
    lat: lat + dLatResult
  }
}

// 天地图坐标转高德地图坐标 (WGS84 -> GCJ02)
const transformLat = (lng, lat) => {
  let ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng))
  ret += (20.0 * Math.sin(6.0 * lng * Math.PI) + 20.0 * Math.sin(2.0 * lng * Math.PI)) * 2.0 / 3.0
  ret += (20.0 * Math.sin(lat * Math.PI) + 40.0 * Math.sin(lat / 3.0 * Math.PI)) * 2.0 / 3.0
  ret += (160.0 * Math.sin(lat / 12.0 * Math.PI) + 320 * Math.sin(lat * Math.PI / 30.0)) * 2.0 / 3.0
  return ret
}

// 天地图坐标转高德地图坐标 (WGS84 -> GCJ02)
const transformLng = (lng, lat) => {
  let ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math.sqrt(Math.abs(lng))
  ret += (20.0 * Math.sin(6.0 * lng * Math.PI) + 20.0 * Math.sin(2.0 * lng * Math.PI)) * 2.0 / 3.0
  ret += (20.0 * Math.sin(lng * Math.PI) + 40.0 * Math.sin(lng / 3.0 * Math.PI)) * 2.0 / 3.0
  ret += (150.0 * Math.sin(lng / 12.0 * Math.PI) + 300.0 * Math.sin(lng / 30.0 * Math.PI)) * 2.0 / 3.0
  return ret
}

export const patrolPlans = [
  {
    id: 'plan_001',
    name: '核心景区安防巡检',
    description: '覆盖圣莲岛、世界荷花博览园等核心景点的安防设备巡检',
    cycle: '每日3次',
    distance: '3.2公里',
    estimatedDuration: '50分钟',
    priority: 'high',
    checkpoints: [
      {
        id: 'checkpoint_01',
        name: '圣莲岛东南监控',
        type: 'security',
        coordinates: { lng: 105.599074, lat: 30.510651 }, // 基于amapPoiData[8]
        deviceType: '高清摄像头',
        description: '检查圣莲岛东南监控设备运行状态'
      },
      {
        id: 'checkpoint_02',
        name: '圣莲岛景区监控',
        type: 'security',
        coordinates: { lng: 105.58804, lat: 30.515591 }, // 基于amapPoiData[11]
        deviceType: '360°全景摄像头',
        description: '检查圣莲岛景区全景监控系统'
      },
      {
        id: 'checkpoint_03',
        name: '圣莲路监控',
        type: 'security',
        coordinates: { lng: 105.594345, lat: 30.509788 }, // 基于amapPoiData[9]
        deviceType: '智能监控摄像头',
        description: '检查圣莲路交通监控系统'
      },
      {
        id: 'checkpoint_04',
        name: '仁里镇停车场监控',
        type: 'security',
        coordinates: { lng: 105.591425, lat: 30.513024 }, // 基于amapPoiData[10]
        deviceType: '停车场监控系统',
        description: '检查停车场安全监控'
      },
      {
        id: 'checkpoint_05',
        name: '圣莲岛安置房Q区监控',
        type: 'security',
        coordinates: { lng: 105.58085, lat: 30.514417 }, // 基于amapPoiData[12]
        deviceType: '社区安防摄像头',
        description: '检查安置房区域安全监控'
      },
      {
        id: 'checkpoint_06',
        name: '仁里镇公厕西北监控',
        type: 'security',
        coordinates: { lng: 105.58085, lat: 30.52082 }, // 基于amapPoiData[13]
        deviceType: '公共区域摄像头',
        description: '检查公共设施区域监控'
      },
      {
        id: 'checkpoint_07',
        name: '圣莲岛安置房L区监控',
        type: 'security',
        coordinates: { lng: 105.5803, lat: 30.517965 }, // 基于amapPoiData[14]
        deviceType: '住宅区监控',
        description: '检查安置房L区安全监控'
      },
      {
        id: 'checkpoint_08',
        name: '紫莲渡监控',
        type: 'security',
        coordinates: { lng: 105.576117, lat: 30.519767 }, // 基于amapPoiData[16]
        deviceType: '渡口监控摄像头',
        description: '检查紫莲渡安全监控'
      }
    ]
  },

  {
    id: 'plan_002',
    name: '设施维护巡检',
    description: '景区基础设施和游客服务设施的维护巡检',
    cycle: '每日2次',
    distance: '4.1公里',
    estimatedDuration: '65分钟',
    priority: 'medium',
    checkpoints: [
      {
        id: 'checkpoint_09',
        name: '首座万豪酒店',
        type: 'accommodation',
        coordinates: { lng: 105.596929, lat: 30.511151 }, // 基于amapPoiData[22]
        deviceType: '酒店设施',
        description: '检查五星级酒店设施运行状况'
      },
      {
        id: 'checkpoint_10',
        name: '圣莲路出入口',
        type: 'entrance',
        coordinates: { lng: 105.595409, lat: 30.5112 }, // 基于amapPoiData[17]
        deviceType: '出入口管理',
        description: '检查主要出入口设施设备'
      },
      {
        id: 'checkpoint_11',
        name: '青年民宿',
        type: 'accommodation',
        coordinates: { lng: 105.581236, lat: 30.515919 }, // 基于amapPoiData[20]
        deviceType: '民宿设施',
        description: '检查民宿基础设施'
      },
      {
        id: 'checkpoint_12',
        name: '喜来乐超市',
        type: 'shopping',
        coordinates: { lng: 105.580747, lat: 30.515973 }, // 基于amapPoiData[25]
        deviceType: '商业设施',
        description: '检查超市商业设施设备'
      },
      {
        id: 'checkpoint_13',
        name: '沃尔玛',
        type: 'shopping',
        coordinates: { lng: 105.580353, lat: 30.516471 }, // 基于amapPoiData[26]
        deviceType: '商业设施',
        description: '检查大型超市设施设备'
      },
      {
        id: 'checkpoint_14',
        name: '招商引资局',
        type: 'service',
        coordinates: { lng: 105.581876, lat: 30.514503 }, // 基于amapPoiData[27]
        deviceType: '政务设施',
        description: '检查政务服务设施'
      },
      {
        id: 'checkpoint_15',
        name: '圣莲岛社区',
        type: 'service',
        coordinates: { lng: 105.581058, lat: 30.515804 }, // 基于amapPoiData[28]
        deviceType: '社区设施',
        description: '检查社区服务设施'
      },
      {
        id: 'checkpoint_16',
        name: '仁里镇出入口2',
        type: 'entrance',
        coordinates: { lng: 105.591108, lat: 30.516644 }, // 基于amapPoiData[19]
        deviceType: '出入口管理',
        description: '检查北部出入口设施'
      }
    ]
  },

  {
    id: 'plan_003',
    name: '环境监测巡检',
    description: '景区环境监测设备和广播系统的巡检维护',
    cycle: '每日1次',
    distance: '2.8公里',
    estimatedDuration: '40分钟',
    priority: 'medium',
    checkpoints: [
      {
        id: 'checkpoint_17',
        name: '圣莲岛东南环境监测点',
        type: 'environment',
        coordinates: { lng: 105.598248, lat: 30.510607 }, // 基于amapPoiData[32]
        deviceType: '水质监测系统',
        description: '检查湖水水质监测设备'
      },
      {
        id: 'checkpoint_18',
        name: '仁里镇停车场环境监测点',
        type: 'environment',
        coordinates: { lng: 105.591359, lat: 30.513177 }, // 基于amapPoiData[31]
        deviceType: '综合环境监测站',
        description: '检查空气质量监测设备'
      },
      {
        id: 'checkpoint_19',
        name: '圣莲岛西南广播',
        type: 'broadcast',
        coordinates: { lng: 105.596482, lat: 30.509603 }, // 基于amapPoiData[29]
        deviceType: '智能广播系统',
        description: '检查景区广播系统设备'
      },
      {
        id: 'checkpoint_20',
        name: '新河口广播',
        type: 'broadcast',
        coordinates: { lng: 105.597758, lat: 30.512705 }, // 基于amapPoiData[30]
        deviceType: '户外广播系统',
        description: '检查新河口广播设备'
      },
      {
        id: 'checkpoint_21',
        name: '世界荷花博览园景区',
        type: 'scenic',
        coordinates: { lng: 105.586008, lat: 30.517955 }, // 基于amapPoiData[3]
        deviceType: '景区设施',
        description: '检查荷花博览园设施设备'
      },
      {
        id: 'checkpoint_22',
        name: '方家壕景区',
        type: 'scenic',
        coordinates: { lng: 105.577366, lat: 30.522038 }, // 基于amapPoiData[0]
        deviceType: '景区设施',
        description: '检查方家壕景区设施'
      },
      {
        id: 'checkpoint_23',
        name: '猫儿洲景区',
        type: 'scenic',
        coordinates: { lng: 105.587703, lat: 30.511598 }, // 基于amapPoiData[4]
        deviceType: '景区设施',
        description: '检查猫儿洲景区设施'
      },
      {
        id: 'checkpoint_24',
        name: '圣莲岛核心景区',
        type: 'scenic',
        coordinates: { lng: 105.598177, lat: 30.510565 }, // 基于amapPoiData[6]
        deviceType: '核心景区设施',
        description: '检查圣莲岛核心景区设施'
      }
    ]
  }
]

// // 巡检点类型图标映射
// export const checkpointIcons = {
//   broadcast: '📢', // 广播
//   security: '🛡️', // 安防
//   emergency: '🚨', // 应急
//   fire: '🔥', // 消防
//   environment: '🌱', // 环境
//   power: '⚡', // 电力
//   access: '🚪', // 出入口
//   transport: '🚢', // 交通
//   service: '🏢', // 服务
//   parking: '🅿️', // 停车场
//   lighting: '💡', // 照明
//   communication: '📡', // 通信
//   waste: '🗑️', // 垃圾
//   control: '🎛️', // 控制
//   accommodation: '🏨', // 住宿
//   entrance: '🚪', // 出入口
//   shopping: '🛒', // 购物
//   scenic: '🏞️',
//   monitor: '📹'
// }


// 巡检点类型图标映射
export const checkpointIcons = {
  1: {
    name: '广播设备',
    icon: '📢'
  },
  2: {
    name: '监控设备',
    icon: '📹'
  },
  3: {
    name: '安防设备',
    icon: '🛡️'
  },
  4: {
    name: '应急设备',
    icon: '🚨'
  },
  5: {
    name: '消防设备',
    icon: '🔥'
  },
  6: {
    name: '环境监控设备',
    icon: '🌱'
  }, // 环境
  7: {
    name: '电力设备',
    icon: '⚡'
  },
  8: {
    name: '出入口设备',
    icon: '🚪'
  },
  9: {
    name: '照明设备',
    icon: '💡'
  },
  10: {
    name: '通信设备',
    icon: '📡'
  },
  transport: '🚢', // 交通
  service: '🏢', // 服务
  parking: '🅿️', // 停车场
  waste: '🗑️', // 垃圾
  control: '🎛️', // 控制
}

// 巡检优先级颜色
export const priorityColors = {
  high: '#e74c3c',
  medium: '#f39c12',
  low: '#52b788'
}

// 获取转换后的巡检点坐标（用于地图绘制）
export const getTransformedCheckpoints = (plan) => {
  return plan.checkpoints.map(checkpoint => ({
    ...checkpoint,
    transformedCoordinates: transformWGS84ToGCJ02(
      checkpoint.coordinates.lng,
      checkpoint.coordinates.lat
    )
  }))
} 